/*******************************************************************************
* Copyright (c) 2008, 2012 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.emf.eef.codegen.ui.initializer.ui;
import java.util.List;
import org.eclipse.core.resources.IContainer;
import org.eclipse.emf.eef.codegen.core.initializer.AbstractPropertiesInitializer;
import org.eclipse.emf.eef.codegen.core.services.PropertiesInitializerStrategyServices;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.ContainerSelectionDialog;
/**
* @author <a href="mailto:goulwen.lefur@obeo.fr">Goulwen Le Fur</a>
*/
public class InitializeEEFModelsDialog extends ContainerSelectionDialog {
private ComboViewer strategies;
private Label description;
private AbstractPropertiesInitializer selectedStrategy;
public InitializeEEFModelsDialog(Shell parentShell, IContainer initialRoot,
boolean allowNewContainerName, String message) {
super(parentShell, initialRoot, allowNewContainerName, message);
}
/**
* {@inheritDoc}
*
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
*/
protected Control createDialogArea(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
container.setLayout(layout);
Group strategyGroup = new Group(container, SWT.NONE);
strategyGroup.setText("Strategy");
GridData strategyGroupData = new GridData(GridData.FILL_BOTH);
strategyGroup.setLayoutData(strategyGroupData);
GridLayout strategyGroupLayout = new GridLayout();
strategyGroupLayout.numColumns = 2;
strategyGroup.setLayout(strategyGroupLayout);
Label strategyLabel = new Label(strategyGroup, SWT.NONE);
strategyLabel.setText("Strategy : ");
strategies = new ComboViewer(strategyGroup);
strategies.setContentProvider(new ArrayContentProvider());
strategies.setLabelProvider(new LabelProvider() {
/**
* {@inheritDoc}
*
* @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
*/
public String getText(Object element) {
if (element instanceof AbstractPropertiesInitializer) {
return ((AbstractPropertiesInitializer)element).getName();
}
return super.getText(element);
}
});
strategies.addSelectionChangedListener(new ISelectionChangedListener() {
/**
* {@inheritDoc}
*
* @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
*/
public void selectionChanged(SelectionChangedEvent event) {
if (event.getSelection() instanceof StructuredSelection
&& ((StructuredSelection)event.getSelection()).getFirstElement() instanceof AbstractPropertiesInitializer) {
newStrategySelected((AbstractPropertiesInitializer)((StructuredSelection)event
.getSelection()).getFirstElement());
}
}
});
description = new Label(strategyGroup, SWT.NONE);
description.setText("No description entered ...");
GridData descriptionData = new GridData();
descriptionData.horizontalSpan = 2;
description.setLayoutData(descriptionData);
Group targetGroup = new Group(container, SWT.NONE);
targetGroup.setText("Target");
GridData targetGroupData = new GridData(GridData.FILL_BOTH);
targetGroup.setLayoutData(targetGroupData);
GridLayout targetGroupLayout = new GridLayout();
targetGroup.setLayout(targetGroupLayout);
super.createDialogArea(targetGroup);
initStrategies();
return container;
}
public AbstractPropertiesInitializer getInitializer() {
return selectedStrategy;
}
protected void newStrategySelected(AbstractPropertiesInitializer firstElement) {
description.setText(firstElement.getDescription());
selectedStrategy = firstElement;
}
private void initStrategies() {
List<AbstractPropertiesInitializer> strategies2 = PropertiesInitializerStrategyServices.getInstance()
.getStrategies();
strategies.setInput(strategies2);
if (strategies2.size() > 0) {
strategies.setSelection(new StructuredSelection(strategies2.get(0)));
description.setText(strategies2.get(0).getDescription());
}
}
}